package Leetcode.每日一题;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @Author: kirito
 * @Date: 2024/3/8 0:01
 * @Description:
 * 题目描述
 * 现有一个正整数，希望去掉这个数中的某一个数字之后可以得到一个回文素数。
 * 回文素数是指一个素数同时还是一个回文数（回文数即从左到右和从右到左均一样的数，例如12321）。
 * 【注意：一位数也被认为是回文数】输入两个正整数N和M，满足N<M，请编写一个程序统计N和M之间存在多少个满足上述要求的数？
 *
 * 输入描述
 * 单组输入。
 * 输入一行，包含两个正整数N 和M，1<=N<M<=1000000,两个数字之间用空格隔开。
 *
 * 输出描述
 * 输出在N和M之间（包含N和M）满足要求的数的个数。
 *
 * 样例输入：
 * 110 120
 * 样例输出
 * 10
 */

public class 回文素数 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int res = isRes(a, b);
        System.out.println(res);
    }

    private static int isRes(int a, int b) {
        int count = 0;
        while (a < b) {
            String s = String.valueOf(a);
            for (int i = 0; i < s.length(); i++) {
                int ans = toDelOne(s, i);
                System.out.println(ans+"  -------");
                if (isHuiWen(ans) && isSuShu(ans)) {
                    count++;
                }
            }
            a++;
        }
        return count;
    }
    //删除一个元素
    private static int toDelOne(String s, int i) {
        char[] chars = s.toCharArray();
        int len = chars.length;
        char[] res = new char[len-1];
        for (int j = 0; j < len-1; j++) {
            if (j < i) {
                res[j] = chars[j];
            } else {
                res[j] = chars[j + 1];
            }
        }
        return Integer.parseInt(String.copyValueOf(res));
    }

    /**
     * 判断一个数是否是素数可以通过遍历从2到该数的平方根之间的所有数，
     * 如果这个数能被这个范围内的任何数整除，则它不是素数；如果没有，则它是素数
     * @param number
     * @return
     */
    private static boolean isSuShu(int number) {
        if (number <= 1) {
            return false;
        }
        for (int i = 2; i <= Math.sqrt(number); i++) {
            if (number % i == 0) {
                return false;
            }
        }
        return true;
    }
    //  %取余  /取商

    /**
     * 1221
     * 0+1
     * 1*10+122%10=10+2=12
     * 12*10+12
     * @param b
     * @return
     */
    private static boolean isHuiWen(int b) {
        int a = b, k = 0;
        while (a != 0) {
            k = k * 10 + a % 10;
            a /= 10;
        }
        return k == b;
    }
}
